React Jestを使ったスパイの利用例
背景
Jestを使ったテストの際に、スパイを使って指定の関数・メソッドが正確に呼び出されてるか確認したい。
こう言う時のJest活用例をここに記載しておく。
参考.icon
カスタム Hooks のテスト、テストにおけるスパイ|React テスト応用、テストに悩む人へ
手順
1. jest.spyOnで対象関数 or メソッドをスパイ化
2. .toBeCalledWith, toBeCalledを使って、呼び出し実行のチェック
1. jest.spyOnで対象関数 or メソッドをスパイ化
code: sample.test.js
const spiedSetStatus = jest.spyOn(analyticsModule, "setStatus")
const spiedSendPageview = jest.spyOn(analyticsModule, "sendPageview")
2. .toBeCalledWith, toBeCalledを使って、呼び出し実行のチェック
code: sample.test.js
// setStatus は { id: "foo", role: "bar" } といったオブジェクトを引数にして呼び出された
expect(spiedSetStatus).toBeCalledWith({ id: "foo", role: "bar" })
// sendPageview は呼び出された
expect(spiedSendPageview).toBeCalled()
SUTのメソッドなどを実行した時に、スパイ化した関数orメソッドが実際に実行されたかどうかを見るためにやる。
いろんな場面で使うことになると思うので、覚えていて損はないかと。